﻿using System.Collections.Generic;
using System.Data.SqlClient;
using Medora.Model.Basic;
using Medora.Model.Classifiers;
using Medora.Model.Institutions;
using Medora.Model.Persons;
using Medora.Model.Security;

namespace Medora.DataContract
{
    public interface  IUow
    {
        //IRepository<User> Users { get; }
        void ExecStoredProcedure(string query, List<SqlParameter> parameters);

        void Commit();
        IRepository<Position> Positions { get; }
        IRepository<Speciality> Specialities { get; }
        IRepository<Address> Addresses { get; }
        IRepository<Country> Countries { get; }
        IRepository<Region> Regions { get; }
        IRepository<Place> Places { get; }
        IRepository<Institution> Institutions { get; }
        IRepository<Department> Departments { get; }
        IRepository<UserProfile> Users { get; }
        IProviderRepository Providers { get; }
        IRepository<ScheduleTemplate> ScheduleTemplates { get; }
        IRepository<ScheduleTemplateItem> ScheduleTemplateItems { get; }
        IRepository<ScheduleItem> ScheduleItems { get; }
        IRepository<ScheduleType> ScheduleTypes { get; }
        IPersonRepository Persons { get; }
        IRepository<Sector> Sectors { get; }
        IVisitRepository Visits { get; }
        IRepository<Allergy> Allergies { get; }
        IRepository<BadHabits> BadHabitses { get; }
        IRepository<FamilyHistory> FamilyHistories { get; }
        IRepository<Medication> Medications { get; }
        IRepository<HeightWeightMeasurement> HeightWeightMeasurements { get; }
        IRepository<BloodPressureMeasurement> BloodPressureMeasurements { get; }
        IRepository<ServiceInVisit> ServicesInVisit { get; }
        IRepository<ProcedureInVisit> ProceduresInVisit { get; }
        IRepository<DiagnosisInVisit> DiagnosisInVisit { get; }
        IRepository<Referral> Referrals { get; }
        IRepository<ScheduleActivity> ScheduleActivities { get; }
        
    }
}